'\" te
.\"  Copyright (c) 2004, Sun Microsystems, Inc.  All Rights Reserved
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH FCIP 4D "Oct 18, 2004"
.SH NAME
fcip \- IP/ARP over Fibre Channel datagram encapsulation driver
.SH SYNOPSIS
.LP
.nf
/dev/fcip
.fi

.SH DESCRIPTION
.sp
.LP
The \fBfcip\fR driver is a Fibre Channel upper layer protocol module for
encapsulating \fBIP\fR (IPv4) and \fBARP\fR datagrams over Fibre Channel. The
\fBfcip\fR driver is  a  loadable,  clonable, \fBSTREAMS\fR driver supporting
the connectionless Data Link Provider Interface, \fBdlpi\fR(4P) over any Sun
Fibre Channel transport layer-compliant host adapter.
.sp
.LP
The \fBfcip\fR driver complies with the \fIRFC 2625\fR specification for
encapsulating IP/ARP datagrams over Fibre Channel, and allows encapsulation of
IPv4 only, as specified in  \fIRFC 2625\fR. The \fBfcip\fR  driver interfaces
with the \fBfp\fR(4D) Sun Fibre Channel port driver.
.SH APPLICATION PROGRAMMING INTERFACE
.sp
.LP
The  cloning  character-special device \fB/dev/fcip\fR is  used to  access all
Fibre Channel ports capable of  supporting \fBIP\fR/\fBARP\fR traffic on the
system.
.SS "fcip and DLPI"
.sp
.LP
The \fBfcip\fR driver is a "style 2" Data Link Service Provider. All
\fBM_PROTO\fR and \fBM_PCPROTO\fR type messages  are interpreted as \fBDLPI\fR
primitives. Valid \fBDLPI\fR primitives are defined in \fB<sys/dlpi.h>\fR\&.
Refer  to \fBdlpi\fR(4P) for  more information on \fBDLPI\fR primitives.
.sp
.LP
An explicit \fBDL_ATTACH_REQ\fR message must be sent to  associate the opened
stream with a  particular Fibre Channel port (ppa). The ppa ID is interpreted
as an unsigned long data type and indicates the corresponding Fibre Channel
port driver instance number. An error  (\fBDL_ERROR_ACK\fR) is  returned by the
driver if the ppa field value does not correspond to a valid port driver
instance number or if the Fibre Channel port is  not \fBONLINE\fR. Refer  to
\fBfp\fR(4D) for more  details on the Fibre Channel port driver.
.sp
.LP
The values returned by the driver in the \fBDL_INFO_ACK\fR primitive in
response to  a \fBDL_INFO_REQ\fR from the user are as follows:
.RS +4
.TP
.ie t \(bu
.el o
Maximum SDU is \fB65280\fR (defined in \fIRFC 2625\fR).
.RE
.RS +4
.TP
.ie t \(bu
.el o
Minimum SDU is \fB0\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
\fBDLSAP\fR address length is \fB8\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
MAC type is \fBDL_ETHER\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
\fBSAP\fR length is \fB-2\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
Service mode is \fBDL_CLDLS\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
Optional quality of service (\fBQOS\fR) fields are set to \fB0\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
Provider style is \fBDL_STYLE2\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
Provider version is \fBDL_VERSION_2\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
Broadcast address value is \fB0xFFFFFFFF\fR.
.RE
.sp
.LP
Once in \fBDL_ATTACHED\fR state, the user must send a \fBDL_BIND_REQ\fR to
associate a particular \fBSAP\fR (Service Access Point) with the stream. The
\fBfcip\fR driver \fBDLSAP\fR address format consists of the 6-byte physical
address component followed immediately by the 2-byte  \fBSAP\fR component
producing an 8-byte \fBDLSAP\fR address. Applications should not be programmed
to use this implementation-specific  \fBDLSAP\fR address format, but use
information returned in the \fBDL_INFO_ACK\fR primitive to compose and
decompose \fBDLSAP\fR addresses. The \fBSAP\fR length, full \fBDLSAP\fR length,
and  \fBSAP\fR/physical ordering  are included  within the \fBDL_INFO_ACK\fR.
The physical address length is the full  \fBDLSAP\fR address length minus the
\fBSAP\fR length. The  physical address  length can  also be  computed by
issuing the \fBDL_PHYS_ADDR_REQ\fR primitive to obtain the current physical
address associated with the stream.
.sp
.LP
Once in the \fBDL_BOUND\fR state, the user can transmit frames on the fibre by
sending \fBDL_UNITDATA_REQ\fR messages to  the  \fBfcip\fR driver. The
\fBfcip\fR driver will route  received frames up any of the open and  bound
streams having a \fBSAP\fR which matches the received frame's  \fBSAP\fR type
as \fBDL_UNITDATA_IND\fR messages. Received Fibre Channel frames are
duplicated and routed up multiple open streams if necessary. The \fBDLSAP\fR
address contained  within the \fBDL_UNITDATA_REQ\fR and \fBDL_UNITDATA_IND\fR
messages consists  of both the \fBSAP\fR (type) and physical address
(WorldWideName) components.
.SS "Other Primitives"
.sp
.LP
In Fibre Channel, \fBmulticasting\fR is defined as an optional service for
Fibre Channel classes three and six only. If required, the Fibre Channel
broadcast service can be used for multicasting. The \fIRFC 2625\fR
specification does not support \fBIP \fRmulticasting or promiscuous mode.
.SS "fcip Fibre Channel ELS"
.sp
.LP
The \fBfcip\fR driver will use the \fBFARP\fR Fibre Channel Extended  Link
Service (\fBELS\fR), where supported, to resolve WorldWide Names (MAC address)
to FC Port Identifiers(Port_ID). The \fBfcip\fR driver also supports InARP to
resolve WorldWide Name and Port_ID to an IP address.
.SH FILES
.sp
.ne 2
.na
\fB\fB/dev/fcip\fR\fR
.ad
.RS 28n
fcip character-special device
.RE

.sp
.ne 2
.na
\fB\fB/kernel/drv/fcip\fR\fR
.ad
.RS 28n
32-bit ELF kernel driver (x86)
.RE

.sp
.ne 2
.na
\fB\fB/kernel/drv/amd64/fcip\fR\fR
.ad
.RS 28n
64-bit ELF kernel driver  (x86)
.RE

.sp
.ne 2
.na
\fB\fB/kernel/drv/sparcv9/fcip\fR\fR
.ad
.RS 28n
64-bit ELF kernel driver (SPARC)
.RE

.sp
.ne 2
.na
\fB\fB/kernel/drv/fcip.conf\fR\fR
.ad
.RS 28n
fcip driver configuration file
.RE

.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(7) for descriptions of the following attributes:
.sp

.sp
.TS
box;
c | c
l | l .
ATTRIBUTE TYPE	ATTRIBUTE VALUE
_
Architecture	SPARC
.TE

.SH SEE ALSO
.sp
.LP
.BR fp (4D),
.BR dlpi (4P),
.BR driver.conf (5),
.BR netstat (8),
.BR prtconf (8)
.sp
.LP
\fIWriting Device Drivers\fR
.sp
.LP
\fIIP and ARP over Fibre Channel, RFC 2625\fR M. Rajagopal, R. Bhagwat, W.
Rickard. Gadzoox Networks, June 1999
.sp
.LP
\fIANSI X3.230-1994, Fibre Channel Physical and Signalling Interface (FC-PH)\fR
.sp
.LP
\fIANSI X3.272-1996, Fibre Channel Arbitrated Loop (FC-AL)\fR
.SH NOTES
.sp
.LP
If you use a Fibre Channel adapter with two or more ports that each share a
common Node WorldWideName, the \fBfcip\fR driver will likely attach to the
first port on the adapter.
.sp
.LP
\fIRFC 2625\fR requires that both source  and destination WorldWideNames have
their 4 bit NAA identifiers set to binary '0001,' indicating that an IEEE
48-bit MAC address is contained in the lower 48 bits of the network address
fields. For additional details, see the \fIRFC 2625\fR specification.
